home *** CD-ROM | disk | FTP | other *** search
/ Stolen Data 3 / Stolen Data 3.adf / SOURCE / Sine.s < prev   
Text File  |  1988-12-31  |  14KB  |  591 lines

  1.     Incdir    Df1:
  2.   **************************************************
  3.   ***  Sine scroller source (C) 1989 DEL/MAYHEM  ***
  4.   **************************************************
  5.  
  6. bitmap1    equ $70000        ;Screen 1 at $70000
  7. bitmap2    equ $72800        ;Screen 2 at $72800
  8.  
  9.  ** Try changing the following 5 equates for cool fx! **
  10.  
  11. speed    equ 2            ;Scrolly speed (1,2,4 or 8)
  12. yspace1    equ 2            ;Sine spacing (Max 512)
  13. yspeed1    equ 6            ;Sine wibble speed (max 512)
  14. sinesize    equ 160            ;Depth of sinescroller (max 220)
  15. stoptime    EQU 4            ;How many seconds scrolly pauses for!
  16.  
  17. blitwait    macro
  18. .bw\@    btst #6,2(a6)        ;Blitwait macro...
  19.     bne.s .bw\@        ;Wait for blitter to stop
  20.     endm
  21.  
  22.     Section del,code_c        ;Put everything into chip memory!
  23.     opt o+,ow-,p+        ;Optimize on / Warnings off / Position independant
  24.  
  25. Start    lea variables(pc),a5    ;Variables pointer in A5
  26.     lea custom,a6        ;Custom chip pointer in A6
  27.  
  28.     bsr deselect0        ;Turn off drive 0
  29.     bsr trash            ;Trash the operating system
  30.     bsr intcustom        ;Init Screen size,modulos etc.
  31.     bsr intbuffer        ;Init double buffer!
  32.     bsr makecop        ;Make the copper list
  33.     bsr initsine        ;Init sinetable!
  34.  
  35.     lea wherecop(pc),a0
  36.     move.l a0,cop1lc(a6)    ;Tell system where copper is...
  37.     move.w copjmp1(a6),d0    ;And start it
  38.     move.w #$87e0,dmacon(a6)    ;Enable Dma.
  39.     move.w #$20,intreq(a6)    ;Clear VBI IRQ bit.
  40.  
  41.    ***********************
  42.    ****** Main loop ******
  43.    ***********************
  44.  
  45. .button    lea custom,a6
  46.     btst #5,intreqr+1(a6)    ;VBI interrupt?
  47.     beq.s .button
  48.     move.w #$20,intreq(a6)    ;Clear VBI IRQ bit.
  49.  
  50.     bsr cls            ;Clear screen!
  51.     bsr dosine        ;Do sine movement!
  52.     blitwait            ;Wait for blitter to stop clearing screen!
  53.     bsr scroll        ;Scroll message!
  54.     bsr blitsine        ;Blit scrolly onto screen
  55.     bsr doublebuffer        ;Double buffer the screen
  56.  
  57.     btst #6,$bfe001        ;Is left mouse button pressed?
  58.     bne.s .button
  59.  
  60.      bsr.s untrash        ;Bring back operating system
  61.     moveq #0,d0        ;Stop a return error!
  62.     rts
  63.     
  64. trash    bset #1,$bfe001        ;Turn power light off
  65.     move.l $4.w,a6
  66.     lea gfxname(pc),a1
  67.     moveq #0,d0
  68.     jsr -552(a6)        ;Open graphics library
  69.     move.l d0,a0
  70.     move.l 38(a0),syscop(a5)    ;Store old system copper address!
  71.  
  72.     lea custom,a6
  73.     move.w intenar(a6),d0    ;Get system IRQ register
  74.     or.w #$8000,d0        ;Set top bit (For enable)
  75.     move.w d0,IRQ(a5)        ;Store it
  76.     move.w dmaconr(A6),d0    ;Get system DMA register
  77.     or.w #$8000,d0        ;Set top bit (For enable)
  78.     move.w d0,DMA(a5)        ;Store it
  79.  
  80.     move.w #$7fff,intena(a6)    ;All irq off
  81.     move.w #$7fff,dmacon(A6)    ;All dma off
  82.     rts
  83.  
  84. untrash    lea custom,a6
  85.     lea variables(pc),a5
  86.  
  87.     move.w #$7fff,$96(a6)    ;Kill DMA
  88.     move.w #$7fff,$9a(a6)    ;Kill IRQ
  89.     move.w DMA(a5),dmacon(A6)    ;Restore system DMA
  90.     move.w IRQ(a5),intena(a6)    ;Restore system IRQ
  91.     move.w #$7fff,intreq(a6)
  92.     clr.w aud0vol(a6)
  93.     clr.w aud1vol(a6)
  94.     clr.w aud2vol(a6)
  95.     clr.w aud3vol(a6)        ;Clear volume registers
  96.  
  97.     move.l syscop(a5),d0    ;Get old system copper address
  98.     move.l d0,cop1lc(a6)    ;And restore it!
  99.     move.l $4.w,a6
  100.     lea intname(pc),a1
  101.     moveq #0,d0
  102.     jsr -552(a6)
  103.     move.l d0,a6
  104.     jsr -390(a6)
  105.     bclr #1,$bfe001        ;Power light back on
  106.     rts
  107.  
  108. setmulti    move.w d7,(a0)+        ;Copper 32 bit write
  109.     swap d0
  110.     move.w d0,(a0)+
  111.     swap d0
  112.     addq.w #2,d7
  113.     move.w d7,(a0)+
  114.     move.w d0,(a0)+
  115.     addq.w #2,d7
  116.     add.l d5,d0
  117.     dbra d6,setmulti
  118.     rts
  119.  
  120. intcustom    clr.w bplcon1(a6)        ;Scroll value
  121.     clr.w bplcon2(a6)        ;Priorities
  122.     clr.w bpl1mod(a6)        ;Modulo A
  123.     clr.w bpl2mod(a6)        ;Modulo B
  124.     move.w #$0038,ddfstrt(a6)    ;Data fetch start
  125.     move.w #$00d0,ddfstop(a6)    ;Data fetch stop
  126.     move.w #$2c81,diwstrt(a6)    ;Window start
  127.     move.w #$2cc1,diwstop(a6)    ;Window stop
  128.     rts
  129.  
  130. makecop    lea wherecop(pc),a0        ;Copperlist address
  131.     
  132.     lea wherespr(pc),a1        ;First do sprites..
  133.     move.l a1,d0
  134.     moveq #7,d6        ;8 sprites
  135.     move.w #$120,d7        ;1st register no.
  136.     moveq #16,d5        ;16 bytes per sprite!
  137.     bsr setmulti
  138.  
  139.     move.l a0,changecop(a5)    ;Store copper address (For double buffer!)
  140.     move.l logbase(a5),d0    ;Bitmap address
  141.     moveq #1-1,d6        ;1 plane
  142.     move.w #$e0,d7        ;1st register no.
  143.     moveq #0,d5        ;Plane length
  144.     bsr setmulti
  145.  
  146.     move.l #$01001200,(a0)+    ;Set 1 bitplane
  147.     move.l #$01800000,(a0)+    ;Colour 0
  148.     move.l #$01820fff,(a0)+    ;Colour 1
  149.     
  150.     moveq #-2,d0
  151.     move.l d0,(a0)+        ;Wait for the impossible (END!)
  152.     rts
  153.  
  154. deselect0    lea cia_b,a0
  155.     bset #3,(a0)        ;deselect drive 0
  156.     bset #7,(a0)        ;switch motor off
  157.     bclr #3,(a0)        ;latch motor signal in disk
  158.     rts
  159.  
  160.  ************************************
  161.  *********** END OF SETUP ***********
  162.  ************************************
  163.  
  164. intbuffer    move.l #bitmap1,logbase(a5)    ;Init doublebuffer screen 1
  165.     move.l #bitmap2,physbase(a5)    ;Init doublebuffer screen 2
  166.     rts
  167.  
  168. doublebuffer
  169.     move.l logbase(a5),d0
  170.     move.l physbase(a5),logbase(a5)
  171.     move.l d0,physbase(a5)
  172.  
  173.     move.l changecop(a5),a0        ;Update copper!
  174.     moveq #0,d6
  175.     move.w #$e0,d7
  176.     moveq #0,d5
  177.     bsr setmulti
  178.     rts
  179.  
  180. cls    moveq #-1,d0
  181.     move.l d0,bltafwm(a6)        ;First and last word mask
  182.     clr.w bltcon1(a6)            ;No special modes
  183.     clr.w bltdmod(a6)            ;D modulo
  184.     move.w #%0000000100000000,bltcon0(a6)     ;No minterm just enable d!    
  185.  
  186.     move.l logbase(a5),bltdpt(A6)        ;Destination
  187.     move.w #(256<<6)!20,bltsize(a6)    ;256 high by 20 words wide
  188.     rts
  189.  
  190. scroll    tst.w stop(a5)
  191.     ble.s .ok
  192.     subq.w #1,stop(a5)
  193.     rts
  194.  
  195. .ok    bsr blitshift
  196.     subq.w #speed,scrcount(a5)
  197.     ble.s .gog
  198.     rts
  199. .gog    move.w #16,scrcount(a5)        ;Reset counter!
  200.  
  201.     lea text(pc),a2
  202.     move.w messcount(a5),d0        ;Message count
  203. .again    moveq #0,d1
  204.     move.b (a2,d0.w),d1            ;Get char
  205.     bne.s .dlf
  206.     clr.w messcount(a5)
  207.     move.w messcount(a5),d0
  208.     bra.s .again            ;Wrap at a zero
  209.  
  210. .dlf    cmp.w #$ff,d1
  211.     bne.s .nstop
  212.     move.w #stoptime*50,stop(a5)        ;Trigger stop    
  213.     moveq #32,d1
  214.  
  215. .nstop    addq.w #1,messcount(a5)        ;Update scroll offset
  216.     lea scrarea+82,a0
  217.     lea font,a1
  218.  
  219.     sub.w #32,d1            ;Ascii conversion!
  220. .go    cmp.w #20,d1
  221.     blt.s .nnl            ;Next line of chars?
  222.     lea 40*16(a1),a1            ;Move down a line!
  223.     sub.w #20,d1
  224.     bra.s .go
  225. .nnl    add.w d1,d1
  226.     add.w d1,a1            ;Get to char 
  227.  
  228.     moveq #15,d0
  229. .xloop    move.w (a1),(a0)            ;Plot char!
  230.     add.w #42,a0
  231.     add.w #40,a1
  232.     dbra d0,.xloop            ;Loop for 16 high
  233.     rts
  234.  
  235. blitshift    moveq #-1,d0
  236.     move.l d0,bltafwm(a6)
  237.     clr.w bltamod(a6)
  238.     clr.w bltdmod(a6)
  239.     clr.w bltcon1(a6)
  240.  
  241.     move.w #%0000100100000000!$f0,d0
  242.     moveq #speed,d1
  243.     neg.w d1
  244.     moveq #12,d2
  245.     lsl.w d2,d1            ;Work out speed (shift!)
  246.     or.w d1,d0
  247.     move.w d0,bltcon0(a6)        ;D=A Minterm
  248.  
  249.     move.l #scrarea,d0
  250.     move.l d0,bltdpt(A6)        ;Destination
  251.     addq.l #2,d0
  252.     move.l d0,bltapt(a6)        ;Source
  253.  
  254.     move.w #(17<<6)!20,bltsize(a6)
  255.     blitwait
  256.     rts
  257.  
  258. blitsine    clr.w bltcon1(a6)
  259.     move.w #42-2,bltamod(a6)
  260.     move.w #40-2,bltdmod(a6)
  261.     move.w #40-2,bltbmod(a6)
  262.  
  263.     move.l logbase(a5),d0
  264.     move.l d0,bltbpt(a6)        ;Init destination pointers!
  265.     move.l d0,bltdpt(a6)
  266.  
  267.     lea masklook(pc),a0
  268.     lea scrpos(pc),a1
  269.     move.l #scrarea+42,a2
  270.     move.l a2,bltapt(a6)        ;Init source pointer!
  271.     lea bltafwm(a6),a3
  272.     lea bltsize(a6),a4
  273.     move.l a7,stacksave(a5)        ;Save stack!
  274.     lea bltdpt+2(a6),a7
  275.     lea bltapt+2(a6),a5
  276.  
  277.     moveq #20-1,d7            ;20 words
  278.     move.w #(16<<6)!1,d6
  279.     move.w #%0000100100000000!$f0,d5
  280.     move.w #%0000110100000000!$fc,d4
  281.  
  282. .loop    move.w d5,bltcon0(a6)         ;D=A
  283.     move.w (a0)+,(a3)            ;First word mask
  284.     move.w a2,(a5)            ;Source
  285.     move.w (a1)+,(a7)            ;Destination
  286.     move.w d6,(a4)            ;Blitsize
  287.     blitwait
  288.  
  289.     move.w d4,bltcon0(a6)         ;D=A+B
  290.     rept 15
  291.     move.w (a0)+,(a3)            ;First word mask
  292.     move.w a2,(a5)            ;Source
  293.     move.w (a1),bltbpt+2(a6)        ;Destination
  294.     move.w (a1)+,(a7)            ;Destination
  295.     move.w d6,(a4)            ;Blitsize
  296.     blitwait
  297.     endr
  298.  
  299.     addq.w #2,a2            ;Next word along!
  300.     dbra d7,.loop
  301.  
  302.     lea variables(pc),a5
  303.     move.l stacksave(a5),sp
  304.     rts    
  305.  
  306. initsine    lea originalsine(pc),a0
  307.     move.w #511,d0
  308. .loop1    sub.w #128,(a0)+            ;Init original sine
  309.     dbra d0,.loop1
  310.  
  311.     lea originalsine(pc),a0
  312.     lea sine1(pc),a1
  313.     move.w #511,d0
  314. .loop2    move.w (a0)+,d1
  315.     muls.w #sinesize,d1            ;Size!
  316.     asr.w #8,d1
  317.     add.w #sinesize/2,d1
  318.     mulu.w #40,d1            ;Multiple of 40!
  319.     move.w d1,(a1)+            ;Make sinetable!
  320.     dbra d0,.loop2
  321.     rts
  322.  
  323. dosine    lea sine1(pc),a0
  324.     lea scrpos(pc),a1
  325.     move.l logbase(a5),a3
  326.     moveq #20-1,d7            ;20 words wide!
  327.     move.w sinestart1(a5),d0
  328.     move.w #1022,d3
  329.     move.w #yspace1,d4
  330. .loop    
  331.     rept 16
  332.     and.w d3,d0
  333.     move.w (a0,d0.w),d2
  334.     lea (a3,d2.w),a2            ;Add offset 1
  335.     add.w d4,d0            ;Spacing 1
  336.     move.w a2,(a1)+            ;Scroll position!
  337.     endr
  338.  
  339.     addq.w #2,a3            ;Next word along!
  340.     dbra d7,.loop
  341.     sub.w #yspeed1,sinestart1(a5)
  342.     rts
  343.  
  344.  
  345.    *** Equates and data below! ***
  346.  
  347. custom     EQU $dff000
  348. bltddat    EQU $000
  349. dmaconr    EQU $002
  350. vposr    EQU $004
  351. vhposr    EQU $006
  352. dskdatr    EQU $008
  353. joy0dat    EQU $00A
  354. joy1dat    EQU $00C
  355. clxdat    EQU $00E
  356. adkconr    EQU $010
  357. pot0dat    EQU $012
  358. pot1dat    EQU $014
  359. potinp    EQU $016
  360. serdatr    EQU $018
  361. dskbytr    EQU $01A
  362. intenar    EQU $01C
  363. intreqr    EQU $01E
  364. dskpt    EQU $020
  365. dsklen    EQU $024
  366. dskdat    EQU $026
  367. refptr    EQU $028
  368. vposw    EQU $02A
  369. vhposw    EQU $02C
  370. copcon    EQU $02E
  371. serdat    EQU $030
  372. serper    EQU $032
  373. potgo    EQU $034
  374. joytest    EQU $036
  375. strEQU    EQU $038
  376. strvbl    EQU $03A
  377. strhor    EQU $03C
  378. strlong    EQU $03E
  379. bltcon0    EQU $040
  380. bltcon1    EQU $042
  381. bltafwm    EQU $044
  382. bltalwm    EQU $046
  383. bltcpt    EQU $048
  384. bltbpt    EQU $04C
  385. bltapt    EQU $050
  386. bltdpt    EQU $054
  387. bltsize    EQU $058
  388. bltcmod    EQU $060
  389. bltbmod    EQU $062
  390. bltamod    EQU $064
  391. bltdmod    EQU $066
  392. bltcdat    EQU $070
  393. bltbdat    EQU $072
  394. bltadat    EQU $074
  395. dsksync    EQU $07E
  396. cop1lc    EQU $080
  397. cop2lc    EQU $084
  398. copjmp1    EQU $088
  399. copjmp2    EQU $08A
  400. copins    EQU $08C
  401. diwstrt    EQU $08E
  402. diwstop    EQU $090
  403. ddfstrt    EQU $092
  404. ddfstop    EQU $094
  405. dmacon    EQU $096
  406. clxcon    EQU $098
  407. intena    EQU $09A
  408. intreq    EQU $09C
  409. adkcon    EQU $09E
  410. aud0lc    EQU $0A0
  411. aud1lc    EQU $0b0
  412. aud2lc    EQU $0c0
  413. aud3lc    EQU $0d0
  414. aud0len    EQU $a4
  415. aud1len    EQU $b4
  416. aud2len    EQU $c4
  417. aud3len    EQU $d4
  418. aud0per    EQU $a6
  419. aud1per    EQU $b6
  420. aud2per    EQU $c6
  421. aud3per    EQU $d6
  422. aud0vol    EQU $a8
  423. aud1vol    EQU $b8
  424. aud2vol    EQU $c8
  425. aud3vol    EQU $d8
  426. aud0dat    EQU $aa
  427. aud1dat    EQU $ba
  428. aud2dat    EQU $ca
  429. aud3dat    EQU $da
  430. bpl1pth    EQU $0E0
  431. bpl2pth    EQU $0E4
  432. bpl3pth    EQU $0E8
  433. bpl4pth    EQU $0EC
  434. bpl5pth    EQU $0F0
  435. bpl6pth    EQU $0F4
  436. bplcon0    EQU $100
  437. bplcon1    EQU $102
  438. bplcon2    EQU $104
  439. bpl1mod    EQU $108
  440. bpl2mod    EQU $10A
  441. bpldat    EQU $110
  442. sprpt    EQU $120
  443. spr    EQU $140
  444. sd_pos    EQU $00
  445. sd_ctl    EQU $02
  446. sd_dataa     EQU $04
  447. sd_datab     EQU $08
  448. color00    EQU $180
  449. color01     EQU $182
  450. color02     EQU $184
  451. color03    EQU $186
  452. color04    EQU $188
  453. color05    EQU $18a
  454. color06    EQU $18c
  455. color07    EQU $18e
  456. color08    EQU $190
  457. color09    EQU $192
  458. color10    EQU $194
  459. color11    EQU $196
  460. color12    EQU $198
  461. color13    EQU $19a
  462. color14    EQU $19c
  463. color15    EQU $19e
  464. color16    EQU $1a0
  465. color17    EQU $1a2
  466. color18    EQU $1a4
  467. color19    EQU $1a6
  468. color20    EQU $1a8
  469. color21    EQU $1aa
  470. color22    EQU $1ac
  471. color23    EQU $1ae
  472. color24     EQU $1b0
  473. color25    EQU $1b2
  474. color26    EQU $1b4
  475. color27    EQU $1b6
  476. color28    EQU $1b8
  477. color29    EQU $1ba
  478. color30    EQU $1bc
  479. color31    EQU $1be
  480. diskreg    EQU $bfd100
  481. keydat    EQU $bfec01
  482. keyint    EQU $bfed01
  483. ctrla    EQU $bfee01
  484. ctrlb    EQU $bfef01
  485. ciatl    EQU $bfe401
  486. ciath    EQU $bfe501
  487. cia_a    EQU $bfe001        ;disk input bits
  488. cia_b    EQU $bfd100        ;disk output bits
  489.  
  490. intname    dc.b "intuition.library",0
  491. gfxname    dc.b "graphics.library",0
  492.     even
  493.  
  494. text    DC.B " THIS SINE SCROLLER WAS CODED BY DEL. "
  495.     DC.B "   IT ISN'T VERY OPTIMIZED BUT WHO CARES?    "
  496.     DC.B "  TRY CHANGING THE EQUATES AT THE TOP OF THE CODE"
  497.     DC.B " FOR DIFFERENT EFFECTS!!!           "
  498.     DC.B "....... DEL! .......",$FF
  499.     DC.B "                    ",0
  500.     even
  501.  
  502. originalsine
  503.     DC.w 128,129,131,132,134,135,137,138,140,142,143,145,146,148,149
  504.     DC.w 151,152,154,156,157,159,160,162,163,165,166,168,169,171,172
  505.     DC.w 174,175,176,178,179,181,182,184,185,186,188,189,191,192,193
  506.     DC.w 195,196,197,199,200,201,202,204,205,206,207,209,210,211,212
  507.     DC.w 213,215,216,217,218,219,220,221,222,223,224,225,226,227,228
  508.     DC.w 229,230,231,232,233,234,235,236,236,237,238,239,240,240,241
  509.     DC.w 242,243,243,244,245,245,246,246,247,247,248,249,249,250,250
  510.     DC.w 250,251,251,252,252,252,253,253,253,254,254,254,254,255,255
  511.     DC.w 255,255,255,255,255,255,255,255,256,255,255,255,255,255,255
  512.     DC.w 255,255,255,255,254,254,254,254,253,253,253,252,252,252,251
  513.     DC.w 251,250,250,250,249,249,248,247,247,246,246,245,245,244,243
  514.     DC.w 243,242,241,240,240,239,238,237,236,236,235,234,233,232,231
  515.     DC.w 230,229,228,227,226,225,224,223,222,221,220,219,218,217,216
  516.     DC.w 215,213,212,211,210,209,207,206,205,204,202,201,200,199,197
  517.     DC.w 196,195,193,192,191,189,188,186,185,184,182,181,179,178,176
  518.     DC.w 175,174,172,171,169,168,166,165,163,162,160,159,157,156,154
  519.     DC.w 152,151,149,148,146,145,143,142,140,138,137,135,134,132,131
  520.     DC.w 129,127,126,124,123,121,120,118,117,115,113,112,110,109,107
  521.     DC.w 106,104,103,101,99,98,96,95,93,92,90,89,87,86,84
  522.     DC.w 83,81,80,79,77,76,74,73,71,70,69,67,66,64,63
  523.     DC.w 62,60,59,58,56,55,54,53,51,50,49,48,46,45,44
  524.     DC.w 43,42,40,39,38,37,36,35,34,33,32,31,30,29,28
  525.     DC.w 27,26,25,24,23,22,21,20,19,19,18,17,16,15,15
  526.     DC.w 14,13,12,12,11,10,10,9,9,8,8,7,6,6,5
  527.     DC.w 5,5,4,4,3,3,3,2,2,2,1,1,1,1,0
  528.     DC.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  529.     DC.w 0,0,0,0,0,1,1,1,1,2,2,2,3,3,3
  530.     DC.w 4,4,5,5,5,6,6,7,8,8,9,9,10,10,11
  531.     DC.w 12,12,13,14,15,15,16,17,18,19,19,20,21,22,23
  532.     DC.w 24,25,26,27,28,29,30,31,32,33,34,35,36,37,38
  533.     DC.w 39,40,42,43,44,45,46,48,49,50,51,53,54,55,56
  534.     DC.w 58,59,60,62,63,64,66,67,69,70,71,73,74,76,77
  535.     DC.w 79,80,81,83,84,86,87,89,90,92,93,95,96,98,99
  536.     DC.w 101,103,104,106,107,109,110,112,113,115,117,118,120,121,123
  537.     DC.w 124,126
  538.  
  539. sine1    ds.w 512
  540.  
  541. masklook    
  542.     rept 20
  543.     dc.w %1000000000000000
  544.     dc.w %0100000000000000
  545.     dc.w %0010000000000000
  546.     dc.w %0001000000000000
  547.     dc.w %0000100000000000
  548.     dc.w %0000010000000000
  549.     dc.w %0000001000000000
  550.     dc.w %0000000100000000
  551.     dc.w %0000000010000000
  552.     dc.w %0000000001000000
  553.     dc.w %0000000000100000
  554.     dc.w %0000000000010000
  555.     dc.w %0000000000001000
  556.     dc.w %0000000000000100
  557.     dc.w %0000000000000010
  558.     dc.w %0000000000000001
  559.     endr
  560.  
  561. shftlook    dc.w $09f0,$19f0,$29f0,$39f0,$49f0,$59f0,$69f0,$79f0
  562.     dc.w $89f0,$99f0,$a9f0,$b9f0,$c9f0,$d9f0,$e9f0,$f9f0
  563.  
  564. scrpos    ds.w 320
  565.  
  566.     rsreset
  567. syscop    rs.l 1
  568. irq    rs.w 1
  569. dma    rs.w 1
  570. physbase    rs.l 1
  571. logbase    rs.l 1
  572. changecop    rs.l 1
  573. scrcount    rs.w 1
  574. stop    rs.w 1
  575. messcount    rs.w 1
  576.  
  577. sinestart1 rs.w 1
  578. stacksave    rs.l 1
  579.  
  580. varisize    rs.w 0
  581. Variables    dcb.b varisize,0
  582.  
  583. wherespr    dcb.b 16*8,0    ;128 bytes for hardware sprites
  584. wherecop     dcb.b 2000,0    ;2k for copper list
  585.  
  586.     section bud,data_c
  587. font    incbin Binary/font.raw
  588.  
  589.     section cake,bss_C
  590. scrarea    ds.b 42*20
  591.